﻿// ....................................................................................................................
//	Author: Copyright (C) 2012 Ing. Marek Hubal
//	Email: hubal@acasoftware.org
// ....................................................................................................................

using System;

namespace core
{
    /// <summary>Trieda ICmdMessageFilter</summary>
    [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.LinkDemand, Flags = System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)]
    public class ICmdMessageFilter : System.Windows.Forms.IMessageFilter
    {
        /// <summary>Metoda: PreFilterMessage</summary>
        /// <param name="m">struktura spravy</param>
        /// <returns>true / false</returns>
        public bool PreFilterMessage(ref System.Windows.Forms.Message m)
        {
            if ((m.Msg == IWin32.WM_KEYDOWN) || (m.Msg == IWin32.WM_SYSKEYDOWN))
            {
                if (IApp.CMD.IsShortcutsEnabled) // Su povolene klav. skratky?
                {
                    int Key = ICmd.TranslateWin32Key(m.WParam.ToInt32(), m.LParam.ToInt32()); // Vytvorim skratku
                    if (Key == ICmd.KEY_NONE) return false; // Neplatna klav. skratka?
                    if (ICmd.IsReservedKey(Key)) return false; // Je to rezervovana klav. skratka?

                    int CMD_ID = IApp.CMD.FindCMD(Key, IApp.AppForm.ActivePanelCMDGroupID); // Ziskam ID prikazu
                    if (CMD_ID != ICmd.CMD_ID_NONE)
                    {
                        return IApp.CMD.ExecCMD(CMD_ID, ICmd.CMD_APP_TARGET_ACTIVE, ICmd.CMD_PANEL_TARGET_ACTIVE); // Vykonam prikaz
                    }
                    CMD_ID = IApp.CMD.FindCMD(Key, -1); // Ziskam ID prikazu
                    if (CMD_ID == ICmd.CMD_ID_NONE) return false; // Nie je prikaz?

                    return IApp.CMD.ExecCMD(CMD_ID, ICmd.CMD_APP_TARGET_ACTIVE, ICmd.CMD_PANEL_TARGET_ACTIVE); // Vykonam prikaz
                }
            }
            return false; // Pokracovat v spracovani
        }
    }

    /// <summary>Trieda ICmd</summary>
	public class ICmd : IDisposable
	{
        protected int[] FShortcuts; // Pole zakladnych skratiek
        protected int[] FAltShortcuts; // Pole alternativnych skratiek
        protected int FEnableShortcutsCounter; // Pocitadlo povolenia/zakazania klav. skratiek

        /// <summary>Property: IsShortcutsEnabled</summary>
        public bool IsShortcutsEnabled
        {
            get
            {
                if (System.Windows.Forms.Form.ActiveForm != IApp.AppForm) return false;
                return FEnableShortcutsCounter == 0;
            }
            set
            {
                if (!value) FEnableShortcutsCounter++;
                else
                {
                    if (FEnableShortcutsCounter > 0) FEnableShortcutsCounter--;
                }
            }
        }

        /// <summary>Konstruktor</summary>
        public ICmd()
        {
            FShortcuts = new int[CMD_ID_LAST]; // Alokujem pamat
            FAltShortcuts = new int[CMD_ID_LAST];

            LoadDefaults(); // Volam nacitanie prednastavenych skratiek
        }
        /// <summary>Dispose metoda</summary>
        public void Dispose()
        {
            FShortcuts = null; 
            FAltShortcuts = null;
        }

        /// <summary>Nacitanie prednastavenych klav. skratiek</summary>
        public void LoadDefaults()
        {
            for (int i = 0; i < FShortcuts.Length; i++) FShortcuts[i] = FAltShortcuts[i] = KEY_NONE; // Inicializacia
            FShortcuts[CMD_ID_SHOW_ABOUT] = KEY_CTRL + KEY_ALT + KEY_A;
            FShortcuts[CMD_ID_FILE_EXPLORER_FORCE_OPEN] = KEY_CTRL + KEY_ENTER;
            FShortcuts[CMD_ID_FILE_EXPLORER_GO_BACK] = KEY_BACKSPACE; FAltShortcuts[CMD_ID_FILE_EXPLORER_GO_BACK] = KEY_CTRL + KEY_PAGE_UP;
            FShortcuts[CMD_ID_FILE_EXPLORER_RELOAD] = KEY_CTRL + KEY_R;
            FShortcuts[CMD_ID_FILE_EXPLORER_GO_DEVICE_ROOT] = KEY_CTRL + KEY_BACKSLASH;
            FShortcuts[CMD_ID_FILE_EXPLORER_GO_PREV_DEVICE] = KEY_CTRL + KEY_ALT + KEY_LEFT;
            FShortcuts[CMD_ID_FILE_EXPLORER_GO_NEXT_DEVICE] = KEY_CTRL + KEY_ALT + KEY_RIGHT;
            FShortcuts[CMD_ID_FILE_EXPLORER_GO_DIRECT] = KEY_CTRL + KEY_G;
            FShortcuts[CMD_ID_FILE_EXPLORER_SHOW_DRIVE_MENU_LEFT_PANEL] = KEY_ALT + KEY_F1;
            FShortcuts[CMD_ID_FILE_EXPLORER_SHOW_DRIVE_MENU_RIGHT_PANEL] = KEY_ALT + KEY_F2;
            FShortcuts[CMD_ID_FILE_EXPLORER_SELECT_INVERT_ACTIVE] = KEY_INSERT;
            FShortcuts[CMD_ID_FILE_EXPLORER_SELECT_SELECT_ALL] = KEY_CTRL + KEY_A; FAltShortcuts[CMD_ID_FILE_EXPLORER_SELECT_SELECT_ALL] = KEY_CTRL + KEY_ADD;
            FShortcuts[CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_COPY] = KEY_CTRL + KEY_C;
            FShortcuts[CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_PASTE] = KEY_CTRL + KEY_V;
            FShortcuts[CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_CUT] = KEY_CTRL + KEY_X;
            FShortcuts[CMD_ID_FILE_EXPLORER_QUICK_FIND] = KEY_CTRL + KEY_F;
            FShortcuts[CMD_ID_TAB_NEXT] = KEY_CTRL + KEY_TAB;
            FShortcuts[CMD_ID_TAB_PREVIOUS] = KEY_CTRL + KEY_SHIFT + KEY_TAB;
            FShortcuts[CMD_ID_FILE_EXPLORER_CALCULATE_FOLDER_SIZE] = KEY_SPACE;
            FShortcuts[CMD_ID_FILE_EXPLORER_CREATE_FOLDER] = KEY_F7;
            FShortcuts[CMD_ID_FILE_EXPLORER_RENAME_ITEM] = KEY_F2;
            FShortcuts[CMD_ID_FILE_EXPLORER_COPY_ITEM] = KEY_F5;
            FShortcuts[CMD_ID_FILE_EXPLORER_MOVE_TO_TRASH_ITEM] = KEY_DELETE; FAltShortcuts[CMD_ID_FILE_EXPLORER_MOVE_TO_TRASH_ITEM] = KEY_F8;
            FShortcuts[CMD_ID_FILE_EXPLORER_MOVE_ITEM] = KEY_F6;
            FShortcuts[CMD_ID_FILE_EXPLORER_DELETE_ITEM] = KEY_SHIFT + KEY_DELETE; FAltShortcuts[CMD_ID_FILE_EXPLORER_DELETE_ITEM] = KEY_SHIFT + KEY_F8;
            FShortcuts[CMD_ID_FILE_EXPLORER_EXTRACT_ARCHIVE] = KEY_ALT + KEY_F9;
            FShortcuts[CMD_ID_FILE_EXPLORER_SEARCH] = KEY_ALT + KEY_F7;
            FShortcuts[CMD_ID_FILE_EXPLORER_RUN_EDITOR] = KEY_F4;
            FShortcuts[CMD_ID_FILE_EXPLORER_RUN_INTERNAL_VIEWER] = KEY_F3;
            FShortcuts[CMD_ID_FILE_EXPLORER_COMPRESS] = KEY_ALT + KEY_F5;
            FShortcuts[CMD_ID_FILE_EXPLORER_RUN_VIEWER] = KEY_SHIFT + KEY_F3;
            FShortcuts[CMD_ID_FILE_EXPLORER_CREATE_EMPTY_FILE] = KEY_SHIFT + KEY_F4;
            FShortcuts[CMD_ID_FILE_EXPLORER_MULTI_RENAME_TOOL] = KEY_CTRL + KEY_M;
        }
        /// <summary>Naciatanie z nastavenia</summary>
        public void Load()
        {
            try
            {
                string[] Data = ICore.Base64Decode(IApp.Settings.App_Shortcuts).Split(new char[] { ';' }, StringSplitOptions.None); // Rozbijem na casti
                for (int i = 0; i < FShortcuts.Length; i++)
                {
                    if (i >= Data.Length) break; // Mimo rozsah?
                    int I = Data[i].IndexOf(','); // Hladam oddelovac
                    if (I == -1) continue; // Nejaka chyba?
                    FShortcuts[i] = ICore.ToInt(Data[i].Substring(0, I));
                    FAltShortcuts[i] = ICore.ToInt(Data[i].Substring(I + 1));
                }
            }
            catch // Chyba?
            {
                LoadDefaults(); // Nacitam defaultne
            }
        }
        /// <summary>Ulozenie do nastavenia</summary>
        public void Save()
        {
            System.Text.StringBuilder B = new System.Text.StringBuilder(); // Builder
            for (int i = 0; i < FShortcuts.Length; i++)
            {
                B.AppendFormat("{0},{1};", FShortcuts[i], FAltShortcuts[i]);
            }
            B.Length--;
            IApp.Settings.App_Shortcuts = ICore.Base64Encode(B.ToString());
        }
        /// <summary>Skopirovanie obsahu objektu</summary>
        /// <param name="pValue">objekt pre skopirovanie</param>
        public void Assign(ICmd pValue)
        {
            for (int i = 0; i < FShortcuts.Length; i++) // Skopirujem skratky
            {
                FShortcuts[i] = pValue.FShortcuts[i];
                FAltShortcuts[i] = pValue.FAltShortcuts[i];
            }
        }

        /// <summary>Event: OnClick pre ITooStripCmdMenuItem</summary>
        /// <param name="pSender">zdroj</param>
        /// <param name="e">parameter</param>
        public void Event_OnCmdMenuItemClick(object pSender, EventArgs e)
        {
            IToolStripCMDMenuItem M = (IToolStripCMDMenuItem)pSender;
            ExecCMD(M.CMD_ID, M.APP_TARGET, M.PANEL_TARGET);
        }
        /// <summary>Vykonanie prikazu</summary>
        /// <param name="pCMD_ID">ID prikazu</param>
        /// <param name="pAPP_TARGET">aplikacia</param>
        /// <param name="pPANEL_TARGET">panel</param>
        /// <returns>true / false</returns>
        public bool ExecCMD(int pCMD_ID, int pAPP_TARGET, int pPANEL_TARGET)
        {
            switch (pCMD_ID)
            {
                case CMD_ID_CHECK_UPDATE:
                    {
                        IApp.App.ShowUpdateInformation(true); // Zobrazim info
                        return true; // Prikaz bol vykonany
                    }
                case CMD_ID_EDIT_VISUAL_THEME:
                    {
                        if (IApp.CurrentVisualTheme.EditWithForm()) IApp.App.UpdateAfterChangeVisualTheme(); // Volam zmenu temy a aktualizaciu aplikacie
                        return true; // Prikaz bol spracovany
                    }
                case CMD_ID_EDIT_SETTINGS:
                    {
                        if (IApp.Settings.EditWithForm()) IApp.App.UpdateAfterChangeSettings(); // Volam zmenu nastavenia
                        return true; // Prikaz bol spracovany
                    }
                case CMD_ID_VISIT_HOMEPAGE:
                    {
                        IApp.OpenURL("http://www.totalem.org/");
                        return true; // Prikaz bol spracovany
                    }
                case CMD_ID_EDIT_SHORTCUTS:
                    {
                        if (!IApp.CMD.EditWithForm()) return true; // Volam zmenu
                        return true; // Prikaz bol vykonany
                    }
                case CMD_ID_SHOW_ABOUT:
                    {
                        IApp.ShowInfo(string.Format(lang.APPFORM_TEXT_2, totalem.CURRENT_VERSION)); // Zobrazim info
                        return true; // Prikaz bol vykonany
                    }
            }
            return IApp.AppForm.ExecCMD(pCMD_ID, pAPP_TARGET, pPANEL_TARGET); // Volam vykonanie v hlavnom okne
        }
        /// <summary>Ziskanie klavesovej skratky</summary>
        /// <param name="pID">ID funkcie</param>
        /// <param name="pAlternative">ktoru skratku</param>
        /// <returns>klav. skratka alebo KEY_NONE</returns>
        public int GetShortcut(int pID, bool pAlternative)
        {
            if ((pID <= CMD_ID_NONE) || (pID >= CMD_ID_LAST)) return KEY_NONE;
            return pAlternative ? FAltShortcuts[pID] : FShortcuts[pID];
        }
        /// <summary>Nastavenie klav. skratky</summary>
        /// <param name="pID">ID funkcie</param>
        /// <param name="pAlternative">ktora skratka</param>
        /// <param name="pKey">klav. skratka</param>
        public void SetShortcut(int pID, bool pAlternative, int pKey)
        {
            if ((pID > CMD_ID_NONE) && (pID < CMD_ID_LAST))
            {
                if (pAlternative) FAltShortcuts[pID] = pKey;
                else FShortcuts[pID] = pKey;
            }
        }
        /// <summary>Ziskanie klavesovej skratky ako typ Keys</summary>
        /// <param name="pID">ID funkcie</param>
        /// <param name="pAlternative">ktoru skratku</param>
        /// <returns>klav. skratka alebo KEY_NONE</returns>
        public System.Windows.Forms.Keys GetShortcutAsKeys(int pID, bool pAlternative)
        {
            return Shortcut2Keys(GetShortcut(pID, pAlternative));
        }

        /// <summary>Najdenie ID prikazu, ku ktoremu je priradena klav. skratka</summary>
        /// <param name="pKey">klav. skratka</param>
        /// <param name="pGroupID">ID skupiny</param>
        /// <returns>ID prikazu</returns>
        public int FindCMD(int pKey, int pGroupID)
        {
            if (pKey == KEY_NONE) return CMD_ID_NONE; // Prazdny vstup?
            for (int i = 1; i < CMD_ID_LAST; i++)
            {
                if ((FShortcuts[i] == pKey) && ((pGroupID == -1) || (ID2GroupID(i) == pGroupID))) return i; // Porovnavam
                if ((FAltShortcuts[i] == pKey) && ((pGroupID == -1) || (ID2GroupID(i) == pGroupID))) return i;
            }
            return CMD_ID_NONE; // Nic som nenasiel
        }

        /// <summary>Prevod prarametrov klav. sprac na klav. skratku</summary>
        /// <param name="pWParam">parameter</param>
        /// <param name="pLParam">parameter</param>
        /// <returns>klav. skratka</returns>
        public static int TranslateWin32Key(int pWParam, int pLParam)
        {
            int R = 0;
            switch (pWParam)
            {
                case 0x41: R = KEY_A; break;
                case 0x42: R = KEY_B; break;
                case 0x43: R = KEY_C; break;
                case 0x44: R = KEY_D; break;
                case 0x45: R = KEY_E; break;
                case 0x46: R = KEY_F; break;
                case 0x47: R = KEY_G; break;
                case 0x48: R = KEY_H; break;
                case 0x49: R = KEY_I; break;
                case 0x4A: R = KEY_J; break;
                case 0x4B: R = KEY_K; break;
                case 0x4C: R = KEY_L; break;
                case 0x4D: R = KEY_M; break;
                case 0x4E: R = KEY_N; break;
                case 0x4F: R = KEY_O; break;
                case 0x50: R = KEY_P; break;
                case 0x51: R = KEY_Q; break;
                case 0x52: R = KEY_R; break;
                case 0x53: R = KEY_S; break;
                case 0x54: R = KEY_T; break;
                case 0x55: R = KEY_U; break;
                case 0x56: R = KEY_V; break;
                case 0x57: R = KEY_W; break;
                case 0x58: R = KEY_X; break;
                case 0x59: R = KEY_Y; break;
                case 0x5A: R = KEY_Z; break;
                case 0x30: R = KEY_0; break;
                case 0x31: R = KEY_1; break;
                case 0x32: R = KEY_2; break;
                case 0x33: R = KEY_3; break;
                case 0x34: R = KEY_4; break;
                case 0x35: R = KEY_5; break;
                case 0x36: R = KEY_6; break;
                case 0x37: R = KEY_7; break;
                case 0x38: R = KEY_8; break;
                case 0x39: R = KEY_9; break;
                case IWin32.VK_F1: R = KEY_F1; break;
                case IWin32.VK_F2: R = KEY_F2; break;
                case IWin32.VK_F3: R = KEY_F3; break;
                case IWin32.VK_F4: R = KEY_F4; break;
                case IWin32.VK_F5: R = KEY_F5; break;
                case IWin32.VK_F6: R = KEY_F6; break;
                case IWin32.VK_F7: R = KEY_F7; break;
                case IWin32.VK_F8: R = KEY_F8; break;
                case IWin32.VK_F9: R = KEY_F9; break;
                case IWin32.VK_F10: R = KEY_F10; break;
                case IWin32.VK_F11: R = KEY_F11; break;
                case IWin32.VK_F12: R = KEY_F12; break;
                case IWin32.VK_ESCAPE: R = KEY_ESC; break;
                case IWin32.VK_TAB: R = KEY_TAB; break;
                case IWin32.VK_SPACE: R = KEY_SPACE; break;
                case IWin32.VK_RETURN: R = KEY_ENTER; break;
                case '/': R = KEY_BACKSLASH; break;
                case IWin32.VK_BACK: R = KEY_BACKSPACE; break;
                case IWin32.VK_INSERT: R = KEY_INSERT; break;
                case IWin32.VK_HOME: R = KEY_HOME; break;
                case IWin32.VK_DELETE: R = KEY_DELETE; break;
                case IWin32.VK_END: R = KEY_END; break;
                case IWin32.VK_PRIOR: R = KEY_PAGE_UP; break;
                case IWin32.VK_NEXT: R = KEY_PAGE_DOWN; break;
                case IWin32.VK_LEFT: R = KEY_LEFT; break;
                case IWin32.VK_RIGHT: R = KEY_RIGHT; break;
                case IWin32.VK_UP: R = KEY_UP; break;
                case IWin32.VK_DOWN: R = KEY_DOWN; break;
                case IWin32.VK_ADD: R = KEY_ADD; break;
                case IWin32.VK_SUBTRACT: R = KEY_SUB; break;
                case IWin32.VK_DIVIDE: R = KEY_DIVIDE; break;
                case IWin32.VK_MULTIPLY: R = KEY_MULTIPLY; break;
            }
            if (R == 0) return KEY_NONE;
            if ((IWin32.User32.GetAsyncKeyState(IWin32.VK_SHIFT) & 0x8000) != 0) R += KEY_SHIFT; // Otestujem stav shift, ctrl a alt klaves
            if ((IWin32.User32.GetAsyncKeyState(IWin32.VK_CONTROL) & 0x8000) != 0) R += KEY_CTRL;
            if ((IWin32.User32.GetAsyncKeyState(IWin32.VK_MENU) & 0x8000) != 0) R += KEY_ALT;
            return R;
        }
        /// <summary>Test ci je klav. skratka rezervovana na interne pouzitie</summary>
        /// <param name="pKey">klav. skratka</param>
        /// <returns>true / false</returns>
        public static bool IsReservedKey(int pKey)
        {
            switch (pKey)
            {
                case KEY_ENTER:
                case KEY_LEFT:
                case KEY_RIGHT:
                case KEY_UP:
                case KEY_DOWN:
                case KEY_PAGE_UP:
                case KEY_PAGE_DOWN:
                    return true;
                default: return false;
            }
        }
        /// <summary>Prevod klav. skratky na textovy popis</summary>
        /// <param name="pKey">klav. skratka</param>
        /// <returns>textovy popis</returns>
        public static string Key2Str(int pKey)
        {
            int K = pKey & 0xff;
            if (K == 0) return "";

            string Result = "";

            switch (K)
            {
                case KEY_A: Result = "A"; break;
                case KEY_B: Result = "B"; break;
                case KEY_C: Result = "C"; break;
                case KEY_D: Result = "D"; break;
                case KEY_E: Result = "E"; break;
                case KEY_F: Result = "F"; break;
                case KEY_G: Result = "G"; break;
                case KEY_H: Result = "H"; break;
                case KEY_I: Result = "I"; break;
                case KEY_J: Result = "J"; break;
                case KEY_K: Result = "K"; break;
                case KEY_L: Result = "L"; break;
                case KEY_M: Result = "M"; break;
                case KEY_N: Result = "N"; break;
                case KEY_O: Result = "O"; break;
                case KEY_P: Result = "P"; break;
                case KEY_Q: Result = "Q"; break;
                case KEY_R: Result = "R"; break;
                case KEY_S: Result = "S"; break;
                case KEY_T: Result = "T"; break;
                case KEY_U: Result = "U"; break;
                case KEY_V: Result = "V"; break;
                case KEY_W: Result = "W"; break;
                case KEY_X: Result = "X"; break;
                case KEY_Y: Result = "Y"; break;
                case KEY_Z: Result = "Z"; break;
                case KEY_0: Result = "0"; break;
                case KEY_1: Result = "1"; break;
                case KEY_2: Result = "2"; break;
                case KEY_3: Result = "3"; break;
                case KEY_4: Result = "4"; break;
                case KEY_5: Result = "5"; break;
                case KEY_6: Result = "6"; break;
                case KEY_7: Result = "7"; break;
                case KEY_8: Result = "8"; break;
                case KEY_9: Result = "9"; break;
                case KEY_F1: Result = "F1"; break;
                case KEY_F2: Result = "F2"; break;
                case KEY_F3: Result = "F3"; break;
                case KEY_F4: Result = "F4"; break;
                case KEY_F5: Result = "F5"; break;
                case KEY_F6: Result = "F6"; break;
                case KEY_F7: Result = "F7"; break;
                case KEY_F8: Result = "F8"; break;
                case KEY_F9: Result = "F9"; break;
                case KEY_F10: Result = "F10"; break;
                case KEY_F11: Result = "F11"; break;
                case KEY_F12: Result = "F12"; break;
                case KEY_ESC: Result = "Esc"; break;
                case KEY_BACKSPACE: Result = "Backspace"; break;
                case KEY_INSERT: Result = "Insert"; break;
                case KEY_HOME: Result = "Home"; break;
                case KEY_END: Result = "End"; break;
                case KEY_PAGE_UP: Result = "Page Up"; break;
                case KEY_PAGE_DOWN: Result = "Page Down"; break;
                case KEY_LEFT: Result = "Left"; break;
                case KEY_RIGHT: Result = "Right"; break;
                case KEY_UP: Result = "Up"; break;
                case KEY_DOWN: Result = "Down"; break;
                case KEY_BACKSLASH: Result = "\\"; break;
                case KEY_ADD: Result = "+"; break;
                case KEY_SUB: Result = "-"; break;
                case KEY_DIVIDE: Result = "/"; break;
                case KEY_MULTIPLY: Result = "*"; break;
                case KEY_SPACE: Result = "Space"; break;
                case KEY_DELETE: Result = "Delete"; break;
                case KEY_ENTER: Result = "Enter"; break;
                case KEY_TAB: Result = "Tab"; break;
            }
            if (Result == "") return "";

            string Mods = "";
            if ((pKey & KEY_CTRL) != 0) Mods += "  Ctrl"; // Otestovanie kontrolnych klaves
            if ((pKey & KEY_ALT) != 0) Mods += "  Alt";
            if ((pKey & KEY_SHIFT) != 0) Mods += "  Shift";
            Mods = Mods.Trim().Replace("  ", " + "); // Ziskam retazec modifikatorov

            return Mods == "" ? Result : Mods + " + " + Result; // Vratim vysledok
        }
        /// <summary>Prevod klavesovej skratky na Keys</summary>
        /// <param name="pKey">skratka</param>
        /// <returns>vysledok</returns>
        public static System.Windows.Forms.Keys Shortcut2Keys(int pKey)
        {
            int K = pKey & 0xff;
            if (K == 0) return System.Windows.Forms.Keys.None; ;

            System.Windows.Forms.Keys Result = System.Windows.Forms.Keys.None;

            switch (K)
            {
                case KEY_A: Result = System.Windows.Forms.Keys.A; break;
                case KEY_B: Result = System.Windows.Forms.Keys.B; break;
                case KEY_C: Result = System.Windows.Forms.Keys.C; break;
                case KEY_D: Result = System.Windows.Forms.Keys.D; break;
                case KEY_E: Result = System.Windows.Forms.Keys.E; break;
                case KEY_F: Result = System.Windows.Forms.Keys.F; break;
                case KEY_G: Result = System.Windows.Forms.Keys.G; break;
                case KEY_H: Result = System.Windows.Forms.Keys.H; break;
                case KEY_I: Result = System.Windows.Forms.Keys.I; break;
                case KEY_J: Result = System.Windows.Forms.Keys.J; break;
                case KEY_K: Result = System.Windows.Forms.Keys.K; break;
                case KEY_L: Result = System.Windows.Forms.Keys.L; break;
                case KEY_M: Result = System.Windows.Forms.Keys.M; break;
                case KEY_N: Result = System.Windows.Forms.Keys.N; break;
                case KEY_O: Result = System.Windows.Forms.Keys.O; break;
                case KEY_P: Result = System.Windows.Forms.Keys.P; break;
                case KEY_Q: Result = System.Windows.Forms.Keys.Q; break;
                case KEY_R: Result = System.Windows.Forms.Keys.R; break;
                case KEY_S: Result = System.Windows.Forms.Keys.S; break;
                case KEY_T: Result = System.Windows.Forms.Keys.T; break;
                case KEY_U: Result = System.Windows.Forms.Keys.U; break;
                case KEY_V: Result = System.Windows.Forms.Keys.V; break;
                case KEY_W: Result = System.Windows.Forms.Keys.W; break;
                case KEY_X: Result = System.Windows.Forms.Keys.X; break;
                case KEY_Y: Result = System.Windows.Forms.Keys.Y; break;
                case KEY_Z: Result = System.Windows.Forms.Keys.Z; break;
                case KEY_0: Result = System.Windows.Forms.Keys.D0; break;
                case KEY_1: Result = System.Windows.Forms.Keys.D1; break;
                case KEY_2: Result = System.Windows.Forms.Keys.D2; break;
                case KEY_3: Result = System.Windows.Forms.Keys.D3; break;
                case KEY_4: Result = System.Windows.Forms.Keys.D4; break;
                case KEY_5: Result = System.Windows.Forms.Keys.D5; break;
                case KEY_6: Result = System.Windows.Forms.Keys.D6; break;
                case KEY_7: Result = System.Windows.Forms.Keys.D7; break;
                case KEY_8: Result = System.Windows.Forms.Keys.D8; break;
                case KEY_9: Result = System.Windows.Forms.Keys.D9; break;
                case KEY_F1: Result = System.Windows.Forms.Keys.F1; break;
                case KEY_F2: Result = System.Windows.Forms.Keys.F2; break;
                case KEY_F3: Result = System.Windows.Forms.Keys.F3; break;
                case KEY_F4: Result = System.Windows.Forms.Keys.F4; break;
                case KEY_F5: Result = System.Windows.Forms.Keys.F5; break;
                case KEY_F6: Result = System.Windows.Forms.Keys.F6; break;
                case KEY_F7: Result = System.Windows.Forms.Keys.F7; break;
                case KEY_F8: Result = System.Windows.Forms.Keys.F8; break;
                case KEY_F9: Result = System.Windows.Forms.Keys.F9; break;
                case KEY_F10: Result = System.Windows.Forms.Keys.F10; break;
                case KEY_F11: Result = System.Windows.Forms.Keys.F11; break;
                case KEY_F12: Result = System.Windows.Forms.Keys.F12; break;
                case KEY_ESC: Result = System.Windows.Forms.Keys.Escape; break;
                case KEY_BACKSPACE: Result = System.Windows.Forms.Keys.Back; break;
                case KEY_INSERT: Result = System.Windows.Forms.Keys.Insert; break;
                case KEY_HOME: Result = System.Windows.Forms.Keys.Home; break;
                case KEY_END: Result = System.Windows.Forms.Keys.End; break;
                case KEY_PAGE_UP: Result = System.Windows.Forms.Keys.PageUp; break;
                case KEY_PAGE_DOWN: Result = System.Windows.Forms.Keys.PageDown; break;
                case KEY_LEFT: Result = System.Windows.Forms.Keys.Left; break;
                case KEY_RIGHT: Result = System.Windows.Forms.Keys.Right; break;
                case KEY_UP: Result = System.Windows.Forms.Keys.Up; break;
                case KEY_DOWN: Result = System.Windows.Forms.Keys.Down; break;
                case KEY_BACKSLASH: Result = System.Windows.Forms.Keys.OemBackslash; break;
                case KEY_ADD: Result = System.Windows.Forms.Keys.Add; break;
                case KEY_SUB: Result = System.Windows.Forms.Keys.Subtract; break;
                case KEY_DIVIDE: Result = System.Windows.Forms.Keys.Divide; break;
                case KEY_MULTIPLY: Result = System.Windows.Forms.Keys.Multiply; break;
                case KEY_SPACE: Result = System.Windows.Forms.Keys.Space; break;
                case KEY_DELETE: Result = System.Windows.Forms.Keys.Delete; break;
                case KEY_ENTER: Result = System.Windows.Forms.Keys.Enter; break;
                case KEY_TAB: Result = System.Windows.Forms.Keys.Tab; break;
            }
            if (Result != System.Windows.Forms.Keys.None)
            {
                if ((pKey & KEY_CTRL) != 0) Result |= System.Windows.Forms.Keys.Control; // Otestovanie kontrolnych klaves
                if ((pKey & KEY_ALT) != 0) Result |= System.Windows.Forms.Keys.Alt;
                if ((pKey & KEY_SHIFT) != 0) Result |= System.Windows.Forms.Keys.Shift;
            }
            return Result;
        }
        /// <summary>Test, ci funkcia moze mat priradenu klav. skratku</summary>
        /// <param name="pID">ID funkcie</param>
        /// <returns>true / false</returns>
        public static bool CanHasShortcut(int pID)
        {
            switch (pID)
            {
                case CMD_ID_FILE_EXPLORER_EXPAND:
                case CMD_ID_FILE_EXPLORER_OPEN:
                case CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_COPY_ACTIVE:
                case CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_CUT_ACTIVE:
                case CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_SHOW_PROPERTIES:
                case CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_SHOW_PROPERTIES_PATH:
                case CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_PRINT_ACTIVE:
                case CMD_ID_FILE_EXPLORER_COPY_ITEM_ACTIVE:
                case CMD_ID_FILE_EXPLORER_COPY_ITEM_SHELL_ACTIVE:
                case CMD_ID_FILE_EXPLORER_COPY_ITEM_SELECTED:
                case CMD_ID_FILE_EXPLORER_COPY_ITEM_SHELL_SELECTED:
                case CMD_ID_FILE_EXPLORER_MOVE_TO_TRASH_ITEM_ACTIVE:
                case CMD_ID_FILE_EXPLORER_MOVE_TO_TRASH_ITEM_SELECTED:
                case CMD_ID_FILE_EXPLORER_MOVE_ITEM_ACTIVE:
                case CMD_ID_FILE_EXPLORER_MOVE_ITEM_SHELL_ACTIVE:
                case CMD_ID_FILE_EXPLORER_MOVE_ITEM_SELECTED:
                case CMD_ID_FILE_EXPLORER_MOVE_ITEM_SHELL_SELECTED:
                case CMD_ID_FILE_EXPLORER_DELETE_ITEM_ACTIVE:
                case CMD_ID_FILE_EXPLORER_DELETE_ITEM_SELECTED:
                case CMD_ID_FILE_EXPLORER_COPY_ITEM_INTERNAL_ACTIVE:
                case CMD_ID_FILE_EXPLORER_COPY_ITEM_INTERNAL_SELECTED:
                case CMD_ID_FILE_EXPLORER_MOVE_ITEM_INTERNAL_ACTIVE:
                case CMD_ID_FILE_EXPLORER_MOVE_ITEM_INTERNAL_SELECTED:
                case CMD_ID_FILE_EXPLORER_SHELL_OPEN_AS:
                case CMD_ID_FILE_EXPLORER_TEST_ARCHIVE_ACTIVE:
                case CMD_ID_FILE_EXPLORER_TEST_ARCHIVE_SELECTED:
                case CMD_ID_FILE_EXPLORER_EXTRACT_ARCHIVE_ACTIVE:
                case CMD_ID_FILE_EXPLORER_EXTRACT_ARCHIVE_SELECTED:
                case CMD_ID_FILE_EXPLORER_EXTRACT_COPY_ACTIVE:
                case CMD_ID_FILE_EXPLORER_EXTRACT_COPY_SELECTED:
                case CMD_ID_FILE_EXPLORER_CHANGE_ATTRIBUTES_ACTIVE:
                case CMD_ID_FILE_EXPLORER_CHANGE_ATTRIBUTES_SELECTED:
                case CMD_ID_FILE_EXPLORER_DRAG_DROP_COPY:
                case CMD_ID_FILE_EXPLORER_DRAG_DROP_MOVE:
                case CMD_ID_FILE_EXPLORER_DRAG_DROP_LINK:
                case CMD_ID_FILE_EXPLORER_GENERATE_CHECKSUM_ACTIVE:
                case CMD_ID_FILE_EXPLORER_GENERATE_CHECKSUM_SELECTED:
                case CMD_ID_FILE_EXPLORER_VERIFY_CHECKSUM_ACTIVE:
                case CMD_ID_FILE_EXPLORER_VERIFY_CHECKSUM_SELECTED:
                case CMD_ID_FILE_EXPLORER_CLOUD_SERVICES_CLEAR:
                case CMD_ID_FILE_EXPLORER_CLOUD_SERVICES_DELETE_ACTIVE:
                case CMD_ID_FILE_EXPLORER_CLOUD_SERVICES_EDIT:
                case CMD_ID_FILE_EXPLORER_CLOUD_SERVICES_NEW_FTP:
                case CMD_ID_FILE_EXPLORER_CLOUD_SERVICES_CLEAR_FTP:
                case CMD_ID_FILE_EXPLORER_CREATE_LINK_ACTIVE:
                case CMD_ID_FILE_EXPLORER_CREATE_LINK_SELECTED:
                case CMD_ID_FILE_EXPLORER_COMPRESS_ACTIVE:
                case CMD_ID_FILE_EXPLORER_COMPRESS_SELECTED:
                case CMD_ID_FILE_EXPLORER_COMPRESS_GZIP_ACTIVE:
                case CMD_ID_FILE_EXPLORER_COMPRESS_GZIP_SELECTED:
                case CMD_ID_FILE_EXPLORER_COMPRESS_TAR_GZIP_ACTIVE:
                case CMD_ID_FILE_EXPLORER_COMPRESS_TAR_GZIP_SELECTED:
                case CMD_ID_FILE_EXPLORER_COMPRESS_ZIP_ACTIVE:
                case CMD_ID_FILE_EXPLORER_COMPRESS_ZIP_SELECTED:
                case CMD_ID_FILE_EXPLORER_COMPRESS_TAR_ACTIVE:
                case CMD_ID_FILE_EXPLORER_COMPRESS_TAR_SELECTED:
                case CMD_ID_FILE_EXPLORER_ENCRYPT_FILES_ACTIVE:
                case CMD_ID_FILE_EXPLORER_ENCRYPT_FILES_SELECTED:
                case CMD_ID_FILE_EXPLORER_DECRYPT_FILES_ACTIVE:
                case CMD_ID_FILE_EXPLORER_DECRYPT_FILES_SELECTED:
                    return false;
                default: return true; // Moze
            }
        }

        /// <summary>Zmena klavesovej skratky pomocou formulara</summary>
        /// <param name="pCaption">popis</param>
        /// <param name="Key">klav. skratka</param>
        /// <returns>true / false</returns>
        public static bool EditShortcut(string pCaption, ref int Key)
        {
            using (IForm_EditShortcut F = new IForm_EditShortcut()) // Vytvorim okno
            {
                F.Value = Key; // Ulozim hodnoty
                F.Text = pCaption; 
                bool B = F.ShowDialog() == System.Windows.Forms.DialogResult.OK;
                if (B) Key = F.Value; // Ulozim vysledok
                return B;
            }
        }
        /// <summary>Zmena objektu pomocou formulara</summary>
        /// <returns>true / false</returns>
        public bool EditWithForm()
        {
            using (IForm_EditShortcuts F = new IForm_EditShortcuts()) // Vytvorim form
            {
                F.Value.Assign(this); // Ulozim aktualne hodnoty
                bool B = F.ShowDialog() == System.Windows.Forms.DialogResult.OK; // Zobrazim okno
                if (B) Assign(F.Value); // Ulozim vysledky
                return B;
            }
        }

        /// <summary>Prevod ID skupiny na textovy popis</summary>
        /// <param name="pID">ID skupiny</param>
        /// <returns>textovy popis</returns>
        public static string GroupID2Str(int pID)
        {
            switch (pID)
            {
                case CMD_GROUP_COMMON: return lang.CMD_GROUP_COMMON_TEXT;
                case CMD_GROUP_FILE_EXPLORER: return lang.CMD_GROUP_FILE_EXPLORER_TEXT;
                default: return "";
            }
        }
        /// <summary>Prevod ID podskupiny na textovy popis</summary>
        /// <param name="pID">ID podskupiny</param>
        /// <returns>textovy popis</returns>
        public static string SubgroupID2Str(int pID)
        {
            switch (pID)
            {
                case CMD_SUBGROUP_COMMON_COMMON: return lang.CMD_SUBGROUP_COMMON_COMMON_TEXT;
                case CMD_SUBGROUP_FILE_EXPLORER_COMMON: return lang.CMD_SUBGROUP_FILE_EXPLORER_COMMON_TEXT;
                case CMD_SUBGROUP_FILE_EXPLORER_NAVIGATION: return lang.CMD_SUBGROUP_FILE_EXPLORER_NAVIGATION_TEXT;
                case CMD_SUBGROUP_FILE_EXPLORER_CONTENT: return lang.CMD_SUBGROUP_FILE_EXPLORER_CONTENT_TEXT;
                case CMD_SUBGROUP_FILE_EXPLORER_SELECTION: return lang.CMD_SUBGROUP_FILE_EXPLORER_SELECTION_TEXT;
                case CMD_SUBGROUP_FILE_EXPLORER_BASE_OPERATION: return lang.CMD_SUBGROUP_FILE_EXPLORER_BASE_OPERATION_TEXT;
                case CMD_SUBGROUP_FILE_EXPLORER_TABS: return lang.CMD_SUBGROUP_FILE_EXPLORER_TABS_TEXT;
                case CMD_SUBGROUP_COMMON_TABS: return lang.CMD_SUBGROUP_COMMON_TABS_TEXT;
                case CMD_SUBGROUP_FILE_EXPLORER_EXT_OPERATION: return lang.CMD_SUBGROUP_FILE_EXPLORER_EXT_OPERATION_TEXT;
                case CMD_SUBGROUP_FILE_EXPLORER_COMMANDS: return lang.CMD_SUBGROUP_FILE_EXPLORER_COMMANDS_TEXT;
                case CMD_SUBGROUP_FILE_EXPLORER_TOOLS: return lang.CMD_SUBGROUP_FILE_EXPLORER_TOOLS_TEXT;
                default: return "";
            }
        }
        /// <summary>Prevod ID funkcie na textovy popis</summary>
        /// <param name="pID">ID funkcie</param>
        /// <returns>textovy popis</returns>
        public static string ID2Str(int pID)
        {
            switch (pID)
            {
                case CMD_ID_SHOW_ABOUT: return lang.CMD_ID_SHOW_ABOUT_TEXT;
                case CMD_ID_EDIT_SHORTCUTS: return lang.CMD_ID_EDIT_SHORTCUTS_TEXT;
                case CMD_ID_VISIT_HOMEPAGE: return lang.CMD_ID_VISIT_HOMEPAGE_TEXT;
                case CMD_ID_EDIT_SETTINGS: return lang.CMD_ID_EDIT_SETTINGS_TEXT;
                case CMD_ID_FILE_EXPLORER_SHOW_LEFT_PANEL: return lang.CMD_ID_FILE_EXPLORER_SHOW_LEFT_PANEL_TEXT;
                case CMD_ID_FILE_EXPLORER_SHOW_RIGHT_PANEL: return lang.CMD_ID_FILE_EXPLORER_SHOW_RIGHT_PANEL_TEXT;
                case CMD_ID_FILE_EXPLORER_CENTER_PANELS: return lang.CMD_ID_FILE_EXPLORER_CENTER_PANELS_TEXT;
                case CMD_ID_FILE_EXPLORER_SWAP_ORIENTATION: return lang.CMD_ID_FILE_EXPLORER_SWAP_ORIENTATION_TEXT;
                case CMD_ID_FILE_EXPLORER_FORCE_OPEN: return lang.CMD_ID_FILE_EXPLORER_FORCE_OPEN_TEXT;
                case CMD_ID_FILE_EXPLORER_GO_BACK: return lang.CMD_ID_FILE_EXPLORER_GO_BACK_TEXT;
                case CMD_ID_FILE_EXPLORER_RELOAD: return lang.CMD_ID_FILE_EXPLORER_RELOAD_TEXT;
                case CMD_ID_EDIT_VISUAL_THEME: return lang.CMD_ID_EDIT_VISUAL_THEME_TEXT;
                case CMD_ID_FILE_EXPLORER_GO_DEVICES: return lang.CMD_ID_FILE_EXPLORER_GO_DEVICES_TEXT;
                case CMD_ID_FILE_EXPLORER_GO_DEVICE_ROOT: return lang.CMD_ID_FILE_EXPLORER_GO_DEVICE_ROOT_TEXT;
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_DESKTOP: return lang.CMD_ID_FILE_EXPLORER_GO_SPECIAL_DESKTOP_TEXT;
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_MY_DOCS: return lang.CMD_ID_FILE_EXPLORER_GO_SPECIAL_MY_DOCS_TEXT;
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_MY_IMAGES: return lang.CMD_ID_FILE_EXPLORER_GO_SPECIAL_MY_IMAGES_TEXT;
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_MY_MUSIC: return lang.CMD_ID_FILE_EXPLORER_GO_SPECIAL_MY_MUSIC_TEXT;
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_MY_VIDEOS: return lang.CMD_ID_FILE_EXPLORER_GO_SPECIAL_MY_VIDEOS_TEXT;
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_WINDOWS: return lang.CMD_ID_FILE_EXPLORER_GO_SPECIAL_WINDOWS_TEXT;
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_SYSTEM: return lang.CMD_ID_FILE_EXPLORER_GO_SPECIAL_SYSTEM_TEXT;
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_START: return lang.CMD_ID_FILE_EXPLORER_GO_SPECIAL_START_TEXT;
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_TEMP: return lang.CMD_ID_FILE_EXPLORER_GO_SPECIAL_TEMP_TEXT;
                case CMD_ID_FILE_EXPLORER_GO_PREV_DEVICE: return lang.CMD_ID_FILE_EXPLORER_GO_PREV_DEVICE_TEXT;
                case CMD_ID_FILE_EXPLORER_GO_NEXT_DEVICE: return lang.CMD_ID_FILE_EXPLORER_GO_NEXT_DEVICE_TEXT;
                case CMD_ID_FILE_EXPLORER_GO_SAME_PANELS: return lang.CMD_ID_FILE_EXPLORER_GO_SAME_PANELS_TEXT;
                case CMD_ID_FILE_EXPLORER_GO_CHOOSE: return lang.CMD_ID_FILE_EXPLORER_GO_CHOOSE_TEXT;
                case CMD_ID_FILE_EXPLORER_SHOW_DRIVE_MENU_LEFT_PANEL: return lang.CMD_ID_FILE_EXPLORER_SHOW_DRIVE_MENU_LEFT_PANEL_TEXT;
                case CMD_ID_FILE_EXPLORER_SHOW_DRIVE_MENU_RIGHT_PANEL: return lang.CMD_ID_FILE_EXPLORER_SHOW_DRIVE_MENU_RIGHT_PANEL_TEXT;
                case CMD_ID_FILE_EXPLORER_GO_DIRECT: return lang.CMD_ID_FILE_EXPLORER_GO_DIRECT_TEXT;
                case CMD_ID_FILE_EXPLORER_EXCHANGE_PANELS: return lang.CMD_ID_FILE_EXPLORER_EXCHANGE_PANELS_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_INVERT_ACTIVE: return lang.CMD_ID_FILE_EXPLORER_SELECT_INVERT_ACTIVE_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_SELECT_ALL: return lang.CMD_ID_FILE_EXPLORER_SELECT_SELECT_ALL_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_DESELECT_ALL: return lang.CMD_ID_FILE_EXPLORER_SELECT_DESELECT_ALL_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_INVERT_ALL: return lang.CMD_ID_FILE_EXPLORER_SELECT_INVERT_ALL_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_SELECT_ALL_DIRS: return lang.CMD_ID_FILE_EXPLORER_SELECT_SELECT_ALL_DIRS_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_DESELECT_ALL_DIRS: return lang.CMD_ID_FILE_EXPLORER_SELECT_DESELECT_ALL_DIRS_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_INVERT_ALL_DIRS: return lang.CMD_ID_FILE_EXPLORER_SELECT_INVERT_ALL_DIRS_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_SELECT_ALL_FILES: return lang.CMD_ID_FILE_EXPLORER_SELECT_SELECT_ALL_FILES_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_DESELECT_ALL_FILES: return lang.CMD_ID_FILE_EXPLORER_SELECT_DESELECT_ALL_FILES_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_INVERT_ALL_FILES: return lang.CMD_ID_FILE_EXPLORER_SELECT_INVERT_ALL_FILES_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_SELECT_SAME_EXT: return lang.CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_SELECT_SAME_EXT_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_DESELECT_SAME_EXT: return lang.CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_DESELECT_SAME_EXT_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_SELECT_SAME_NAME: return lang.CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_SELECT_SAME_NAME_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_DESELECT_SAME_NAME: return lang.CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_DESELECT_SAME_NAME_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_COMPARE_DIRS_SAME: return lang.CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_COMPARE_DIRS_SAME_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_COMPARE_DIRS_OTHER: return lang.CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_COMPARE_DIRS_OTHER_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_FILE_SAVE: return lang.CMD_ID_FILE_EXPLORER_SELECT_FILE_SAVE_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_FILE_LOAD: return lang.CMD_ID_FILE_EXPLORER_SELECT_FILE_LOAD_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_FILES: return lang.CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_FILES_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_FULL_FILES: return lang.CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_FULL_FILES_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_PATH: return lang.CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_PATH_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_HIDE_SELECTION: return lang.CMD_ID_FILE_EXPLORER_SELECT_HIDE_SELECTION_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_BY_FILTER: return lang.CMD_ID_FILE_EXPLORER_SELECT_BY_FILTER_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_SAVE: return lang.CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_SAVE_TEXT;
                case CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_LOAD: return lang.CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_LOAD_TEXT;
                case CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_COPY: return lang.CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_COPY_TEXT;
                case CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_PASTE: return lang.CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_PASTE_TEXT;
                case CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_CUT: return lang.CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_CUT_TEXT;
                case CMD_ID_FILE_EXPLORER_QUICK_FIND: return lang.CMD_ID_FILE_EXPLORER_QUICK_FIND_TEXT;
                case CMD_ID_TAB_CLOSE_ACTIVE: return lang.CMD_ID_TAB_CLOSE_ACTIVE_TEXT;
                case CMD_ID_TAB_CLOSE_ALL: return lang.CMD_ID_TAB_CLOSE_ALL_TEXT;
                case CMD_ID_TAB_CLOSE_ALL_RIGHT: return lang.CMD_ID_TAB_CLOSE_ALL_RIGHT_TEXT;
                case CMD_ID_TAB_NEXT: return lang.CMD_ID_TAB_NEXT_TEXT;
                case CMD_ID_TAB_PREVIOUS: return lang.CMD_ID_TAB_PREVIOUS_TEXT;
                case CMD_ID_TAB_RENAME: return lang.CMD_ID_TAB_RENAME_TEXT;
                case CMD_ID_TAB_DUPLICATE: return lang.CMD_ID_TAB_DUPLICATE_TEXT;
                case CMD_ID_FILE_EXPLORER_NEW_TAB: return lang.CMD_ID_FILE_EXPLORER_NEW_TAB_TEXT;
                case CMD_ID_FILE_EXPLORER_NEW_TAB_CURRENT_PATH: return lang.CMD_ID_FILE_EXPLORER_NEW_TAB_CURRENT_PATH_TEXT;
                case CMD_ID_FILE_EXPLORER_NEW_TAB_CURRENT_ITEM: return lang.CMD_ID_FILE_EXPLORER_NEW_TAB_CURRENT_ITEM_TEXT;
                case CMD_ID_FILE_EXPLORER_RUN_COMMAND: return lang.CMD_ID_FILE_EXPLORER_RUN_COMMAND_TEXT;
                case CMD_ID_FILE_EXPLORER_MAP_NETWORK_DRIVE: return lang.CMD_ID_FILE_EXPLORER_MAP_NETWORK_DRIVE_TEXT;
                case CMD_ID_FILE_EXPLORER_UNMAP_NETWORK_DRIVE: return lang.CMD_ID_FILE_EXPLORER_UNMAP_NETWORK_DRIVE_TEXT;
                case CMD_ID_FILE_EXPLORER_SHARE_CURRENT_PATH: return lang.CMD_ID_FILE_EXPLORER_SHARE_CURRENT_PATH_TEXT;
                case CMD_ID_FILE_EXPLORER_UNSHARE_CURRENT_PATH: return lang.CMD_ID_FILE_EXPLORER_UNSHARE_CURRENT_PATH_TEXT;
                case CMD_ID_FILE_EXPLORER_RENAME_DEVICE: return lang.CMD_ID_FILE_EXPLORER_RENAME_DEVICE_TEXT;
                case CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_PRINT: return lang.CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_PRINT_TEXT;
                case CMD_ID_FILE_EXPLORER_CALCULATE_FOLDER_SIZE: return lang.CMD_ID_FILE_EXPLORER_CALCULATE_FOLDER_SIZE_TEXT;
                case CMD_ID_FILE_EXPLORER_CALCULATE_SPACE_OCCUPIED: return lang.CMD_ID_FILE_EXPLORER_CALCULATE_SPACE_OCCUPIED_TEXT;
                case CMD_ID_FILE_EXPLORER_CREATE_FOLDER: return lang.CMD_ID_FILE_EXPLORER_CREATE_FOLDER_TEXT;
                case CMD_ID_FILE_EXPLORER_RENAME_ITEM: return lang.CMD_ID_FILE_EXPLORER_RENAME_ITEM_TEXT;
                case CMD_ID_FILE_EXPLORER_COPY_ITEM: return lang.CMD_ID_FILE_EXPLORER_COPY_ITEM_TEXT;
                case CMD_ID_FILE_EXPLORER_MOVE_TO_TRASH_ITEM: return lang.CMD_ID_FILE_EXPLORER_MOVE_TO_TRASH_ITEM_TEXT;
                case CMD_ID_FILE_EXPLORER_MOVE_ITEM: return lang.CMD_ID_FILE_EXPLORER_MOVE_ITEM_TEXT;
                case CMD_ID_FILE_EXPLORER_DELETE_ITEM: return lang.CMD_ID_FILE_EXPLORER_DELETE_ITEM_TEXT;
                case CMD_ID_FILE_EXPLORER_TEST_ARCHIVE: return lang.CMD_ID_FILE_EXPLORER_TEST_ARCHIVE_TEXT;
                case CMD_ID_FILE_EXPLORER_EXTRACT_ARCHIVE: return lang.CMD_ID_FILE_EXPLORER_EXTRACT_ARCHIVE_TEXT;
                case CMD_ID_FILE_EXPLORER_CHANGE_ATTRIBUTES: return lang.CMD_ID_FILE_EXPLORER_CHANGE_ATTRIBUTES_TEXT;
                case CMD_ID_FILE_EXPLORER_JOIN_FILES: return lang.CMD_ID_FILE_EXPLORER_JOIN_FILES_TEXT;
                case CMD_ID_FILE_EXPLORER_SPLIT_FILES: return lang.CMD_ID_FILE_EXPLORER_SPLIT_FILES_TEXT;
                case CMD_ID_CHECK_UPDATE: return lang.CMD_ID_CHECK_UPDATE_TEXT;
                case CMD_ID_FILE_EXPLORER_SEARCH: return lang.CMD_ID_FILE_EXPLORER_SEARCH_TEXT;
                case CMD_ID_FILE_EXPLORER_GENERATE_CHECKSUM: return lang.CMD_ID_FILE_EXPLORER_GENERATE_CHECKSUM_TEXT;
                case CMD_ID_FILE_EXPLORER_VERIFY_CHECKSUM: return lang.CMD_ID_FILE_EXPLORER_VERIFY_CHECKSUM_TEXT;
                case CMD_ID_FILE_EXPLORER_RUN_EDITOR: return lang.CMD_ID_FILE_EXPLORER_RUN_EDITOR_TEXT;
                case CMD_ID_FILE_EXPLORER_RUN_VIEWER: return lang.CMD_ID_FILE_EXPLORER_RUN_VIEWER_TEXT;
                case CMD_ID_FILE_EXPLORER_CREATE_FILE_CLONE: return lang.CMD_ID_FILE_EXPLORER_CREATE_FILE_CLONE_TEXT;
                case CMD_ID_FILE_EXPLORER_CREATE_LINK: return lang.CMD_ID_FILE_EXPLORER_CREATE_LINK_TEXT;
                case CMD_ID_FILE_EXPLORER_COMPRESS: return lang.CMD_ID_FILE_EXPLORER_COMPRESS_TEXT;
                case CMD_ID_FILE_EXPLORER_RUN_INTERNAL_VIEWER: return lang.CMD_ID_FILE_EXPLORER_RUN_INTERNAL_VIEWER_TEXT;
                case CMD_ID_FILE_EXPLORER_EXPORT_LIST_TO_FILE: return lang.CMD_ID_FILE_EXPLORER_EXPORT_LIST_TO_FILE_TEXT;
                case CMD_ID_FILE_EXPLORER_ENCRYPT_FILES: return lang.CMD_ID_FILE_EXPLORER_ENCRYPT_FILES_TEXT;
                case CMD_ID_FILE_EXPLORER_DECRYPT_FILES: return lang.CMD_ID_FILE_EXPLORER_DECRYPT_FILES_TEXT;
                case CMD_ID_FILE_EXPLORER_CREATE_EMPTY_FILE: return lang.CMD_ID_FILE_EXPLORER_CREATE_EMPTY_FILE_TEXT;
                case CMD_ID_FILE_EXPLORER_CREATE_NEW_FILE_FROM_CLIPBOARD: return lang.CMD_ID_FILE_EXPLORER_CREATE_NEW_FILE_FROM_CLIPBOARD_TEXT;
                case CMD_ID_FILE_EXPLORER_EJECT_CD_DEVICE: return lang.CMD_ID_FILE_EXPLORER_EJECT_CD_DEVICE_TEXT;
                case CMD_ID_FILE_EXPLORER_EXTRACT_CD_TRACKS: return lang.CMD_ID_FILE_EXPLORER_EXTRACT_CD_TRACKS_TEXT;
                case CMD_ID_FILE_EXPLORER_CREATE_FULL_LIST: return lang.CMD_ID_FILE_EXPLORER_CREATE_FULL_LIST_TEXT;
                case CMD_ID_FILE_EXPLORER_MULTI_RENAME_TOOL: return lang.CMD_ID_FILE_EXPLORER_MULTI_RENAME_TOOL_TEXT;
                default: return "";
            }
        }
        /// <summary>Prevod ID prikazu na ID skupiny</summary>
        /// <param name="pID">ID prikazu</param>
        /// <returns>ID skupiny</returns>
        public static int ID2GroupID(int pID)
        {
            switch (pID)
            {
                case CMD_ID_FILE_EXPLORER_SHOW_LEFT_PANEL:
                case CMD_ID_FILE_EXPLORER_SHOW_RIGHT_PANEL:
                case CMD_ID_FILE_EXPLORER_CENTER_PANELS:
                case CMD_ID_FILE_EXPLORER_SWAP_ORIENTATION:
                case CMD_ID_FILE_EXPLORER_EXPAND:
                case CMD_ID_FILE_EXPLORER_OPEN:
                case CMD_ID_FILE_EXPLORER_FORCE_OPEN:
                case CMD_ID_FILE_EXPLORER_GO_BACK:
                case CMD_ID_FILE_EXPLORER_RELOAD:
                case CMD_ID_FILE_EXPLORER_GO_DEVICES:
                case CMD_ID_FILE_EXPLORER_GO_DEVICE_ROOT:
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_DESKTOP:
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_MY_DOCS:
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_MY_IMAGES:
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_MY_MUSIC:
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_MY_VIDEOS:
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_WINDOWS:
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_SYSTEM:
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_START:
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_TEMP:
                case CMD_ID_FILE_EXPLORER_GO_PREV_DEVICE:
                case CMD_ID_FILE_EXPLORER_GO_NEXT_DEVICE:
                case CMD_ID_FILE_EXPLORER_GO_SAME_PANELS:
                case CMD_ID_FILE_EXPLORER_GO_CHOOSE:
                case CMD_ID_FILE_EXPLORER_SHOW_DRIVE_MENU_LEFT_PANEL:
                case CMD_ID_FILE_EXPLORER_SHOW_DRIVE_MENU_RIGHT_PANEL:
                case CMD_ID_FILE_EXPLORER_GO_DIRECT:
                case CMD_ID_FILE_EXPLORER_EXCHANGE_PANELS:
                case CMD_ID_FILE_EXPLORER_SELECT_INVERT_ACTIVE:
                case CMD_ID_FILE_EXPLORER_SELECT_SELECT_ALL:
                case CMD_ID_FILE_EXPLORER_SELECT_DESELECT_ALL:
                case CMD_ID_FILE_EXPLORER_SELECT_INVERT_ALL:
                case CMD_ID_FILE_EXPLORER_SELECT_SELECT_ALL_DIRS:
                case CMD_ID_FILE_EXPLORER_SELECT_DESELECT_ALL_DIRS:
                case CMD_ID_FILE_EXPLORER_SELECT_INVERT_ALL_DIRS:
                case CMD_ID_FILE_EXPLORER_SELECT_SELECT_ALL_FILES:
                case CMD_ID_FILE_EXPLORER_SELECT_DESELECT_ALL_FILES:
                case CMD_ID_FILE_EXPLORER_SELECT_INVERT_ALL_FILES:
                case CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_SELECT_SAME_EXT:
                case CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_DESELECT_SAME_EXT:
                case CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_SELECT_SAME_NAME:
                case CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_DESELECT_SAME_NAME:
                case CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_COMPARE_DIRS_SAME:
                case CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_COMPARE_DIRS_OTHER:
                case CMD_ID_FILE_EXPLORER_SELECT_FILE_SAVE:
                case CMD_ID_FILE_EXPLORER_SELECT_FILE_LOAD:
                case CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_FILES:
                case CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_FULL_FILES:
                case CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_PATH:
                case CMD_ID_FILE_EXPLORER_SELECT_HIDE_SELECTION:
                case CMD_ID_FILE_EXPLORER_SELECT_BY_FILTER:
                case CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_SAVE:
                case CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_LOAD:
                case CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_COPY:
                case CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_PASTE:
                case CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_CUT:
                case CMD_ID_FILE_EXPLORER_QUICK_FIND:
                case CMD_ID_FILE_EXPLORER_NEW_TAB:
                case CMD_ID_FILE_EXPLORER_NEW_TAB_CURRENT_PATH:
                case CMD_ID_FILE_EXPLORER_NEW_TAB_CURRENT_ITEM:
                case CMD_ID_FILE_EXPLORER_RUN_COMMAND:
                case CMD_ID_FILE_EXPLORER_MAP_NETWORK_DRIVE:
                case CMD_ID_FILE_EXPLORER_UNMAP_NETWORK_DRIVE:
                case CMD_ID_FILE_EXPLORER_SHARE_CURRENT_PATH:
                case CMD_ID_FILE_EXPLORER_UNSHARE_CURRENT_PATH:
                case CMD_ID_FILE_EXPLORER_RENAME_DEVICE:
                case CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_PRINT:
                case CMD_ID_FILE_EXPLORER_CALCULATE_FOLDER_SIZE:
                case CMD_ID_FILE_EXPLORER_CALCULATE_SPACE_OCCUPIED:
                case CMD_ID_FILE_EXPLORER_CREATE_FOLDER:
                case CMD_ID_FILE_EXPLORER_RENAME_ITEM:
                case CMD_ID_FILE_EXPLORER_COPY_ITEM:
                case CMD_ID_FILE_EXPLORER_MOVE_TO_TRASH_ITEM:
                case CMD_ID_FILE_EXPLORER_MOVE_ITEM:
                case CMD_ID_FILE_EXPLORER_DELETE_ITEM:
                case CMD_ID_FILE_EXPLORER_TEST_ARCHIVE:
                case CMD_ID_FILE_EXPLORER_EXTRACT_ARCHIVE:
                case CMD_ID_FILE_EXPLORER_CHANGE_ATTRIBUTES:
                case CMD_ID_FILE_EXPLORER_JOIN_FILES:
                case CMD_ID_FILE_EXPLORER_SPLIT_FILES:
                case CMD_ID_FILE_EXPLORER_SEARCH:
                case CMD_ID_FILE_EXPLORER_GENERATE_CHECKSUM:
                case CMD_ID_FILE_EXPLORER_VERIFY_CHECKSUM:
                case CMD_ID_FILE_EXPLORER_RUN_EDITOR:
                case CMD_ID_FILE_EXPLORER_RUN_VIEWER:
                case CMD_ID_FILE_EXPLORER_RUN_INTERNAL_VIEWER:
                case CMD_ID_FILE_EXPLORER_CREATE_FILE_CLONE:
                case CMD_ID_FILE_EXPLORER_CREATE_LINK:
                case CMD_ID_FILE_EXPLORER_COMPRESS:
                case CMD_ID_FILE_EXPLORER_EXPORT_LIST_TO_FILE:
                case CMD_ID_FILE_EXPLORER_ENCRYPT_FILES:
                case CMD_ID_FILE_EXPLORER_DECRYPT_FILES:
                case CMD_ID_FILE_EXPLORER_CREATE_EMPTY_FILE:
                case CMD_ID_FILE_EXPLORER_CREATE_NEW_FILE_FROM_CLIPBOARD:
                case CMD_ID_FILE_EXPLORER_EJECT_CD_DEVICE:
                case CMD_ID_FILE_EXPLORER_EXTRACT_CD_TRACKS:
                case CMD_ID_FILE_EXPLORER_CREATE_FULL_LIST:
                case CMD_ID_FILE_EXPLORER_MULTI_RENAME_TOOL:
                    return CMD_GROUP_FILE_EXPLORER;
                default: return CMD_GROUP_COMMON;
            }
        }
        /// <summary>Prevod ID prikazu na ID podskupiny</summary>
        /// <param name="pID">ID prikazu</param>
        /// <returns>ID podskupiny</returns>
        public static int ID2SubroupID(int pID)
        {
            switch (pID)
            {
                case CMD_ID_FILE_EXPLORER_EXTRACT_CD_TRACKS:
                    return CMD_SUBGROUP_FILE_EXPLORER_TOOLS;
                case CMD_ID_FILE_EXPLORER_RUN_COMMAND:
                case CMD_ID_FILE_EXPLORER_MAP_NETWORK_DRIVE:
                case CMD_ID_FILE_EXPLORER_UNMAP_NETWORK_DRIVE:
                case CMD_ID_FILE_EXPLORER_SHARE_CURRENT_PATH:
                case CMD_ID_FILE_EXPLORER_UNSHARE_CURRENT_PATH:
                case CMD_ID_FILE_EXPLORER_RENAME_DEVICE:
                case CMD_ID_FILE_EXPLORER_RUN_EDITOR:
                case CMD_ID_FILE_EXPLORER_RUN_VIEWER:
                case CMD_ID_FILE_EXPLORER_RUN_INTERNAL_VIEWER:
                case CMD_ID_FILE_EXPLORER_EJECT_CD_DEVICE:
                    return ICmd.CMD_SUBGROUP_FILE_EXPLORER_COMMANDS;
                case CMD_ID_FILE_EXPLORER_EXPAND:
                case CMD_ID_FILE_EXPLORER_OPEN:
                case CMD_ID_FILE_EXPLORER_FORCE_OPEN:
                case CMD_ID_FILE_EXPLORER_GO_BACK:
                case CMD_ID_FILE_EXPLORER_GO_DEVICES:
                case CMD_ID_FILE_EXPLORER_GO_DEVICE_ROOT:
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_DESKTOP:
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_MY_DOCS:
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_MY_IMAGES:
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_MY_MUSIC:
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_MY_VIDEOS:
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_WINDOWS:
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_SYSTEM:
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_START:
                case CMD_ID_FILE_EXPLORER_GO_SPECIAL_TEMP:
                case CMD_ID_FILE_EXPLORER_GO_PREV_DEVICE:
                case CMD_ID_FILE_EXPLORER_GO_NEXT_DEVICE:
                case CMD_ID_FILE_EXPLORER_GO_SAME_PANELS:
                case CMD_ID_FILE_EXPLORER_GO_CHOOSE:
                case CMD_ID_FILE_EXPLORER_SHOW_DRIVE_MENU_LEFT_PANEL:
                case CMD_ID_FILE_EXPLORER_SHOW_DRIVE_MENU_RIGHT_PANEL:
                case CMD_ID_FILE_EXPLORER_GO_DIRECT:
                    return CMD_SUBGROUP_FILE_EXPLORER_NAVIGATION;
                case CMD_ID_FILE_EXPLORER_SHOW_LEFT_PANEL:
                case CMD_ID_FILE_EXPLORER_SHOW_RIGHT_PANEL:
                case CMD_ID_FILE_EXPLORER_CENTER_PANELS:
                case CMD_ID_FILE_EXPLORER_SWAP_ORIENTATION:
                    return CMD_SUBGROUP_FILE_EXPLORER_COMMON;
                case CMD_ID_FILE_EXPLORER_RELOAD:
                case CMD_ID_FILE_EXPLORER_EXCHANGE_PANELS:
                case CMD_ID_FILE_EXPLORER_QUICK_FIND:
                    return CMD_SUBGROUP_FILE_EXPLORER_CONTENT;
                case CMD_ID_FILE_EXPLORER_SELECT_INVERT_ACTIVE:
                case CMD_ID_FILE_EXPLORER_SELECT_SELECT_ALL:
                case CMD_ID_FILE_EXPLORER_SELECT_DESELECT_ALL:
                case CMD_ID_FILE_EXPLORER_SELECT_INVERT_ALL:
                case CMD_ID_FILE_EXPLORER_SELECT_SELECT_ALL_DIRS:
                case CMD_ID_FILE_EXPLORER_SELECT_DESELECT_ALL_DIRS:
                case CMD_ID_FILE_EXPLORER_SELECT_INVERT_ALL_DIRS:
                case CMD_ID_FILE_EXPLORER_SELECT_SELECT_ALL_FILES:
                case CMD_ID_FILE_EXPLORER_SELECT_DESELECT_ALL_FILES:
                case CMD_ID_FILE_EXPLORER_SELECT_INVERT_ALL_FILES:
                case CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_SELECT_SAME_EXT:
                case CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_DESELECT_SAME_EXT:
                case CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_SELECT_SAME_NAME:
                case CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_DESELECT_SAME_NAME:
                case CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_COMPARE_DIRS_SAME:
                case CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_COMPARE_DIRS_OTHER:
                case CMD_ID_FILE_EXPLORER_SELECT_FILE_SAVE:
                case CMD_ID_FILE_EXPLORER_SELECT_FILE_LOAD:
                case CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_FILES:
                case CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_FULL_FILES:
                case CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_PATH:
                case CMD_ID_FILE_EXPLORER_SELECT_HIDE_SELECTION:
                case CMD_ID_FILE_EXPLORER_SELECT_BY_FILTER:
                case CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_SAVE:
                case CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_LOAD:
                    return CMD_SUBGROUP_FILE_EXPLORER_SELECTION;
                case CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_COPY:
                case CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_PASTE:
                case CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_CUT:
                case CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_PRINT:
                case CMD_ID_FILE_EXPLORER_CREATE_FOLDER:
                case CMD_ID_FILE_EXPLORER_RENAME_ITEM:
                case CMD_ID_FILE_EXPLORER_COPY_ITEM:
                case CMD_ID_FILE_EXPLORER_MOVE_TO_TRASH_ITEM:
                case CMD_ID_FILE_EXPLORER_MOVE_ITEM:
                case CMD_ID_FILE_EXPLORER_DELETE_ITEM:
                case CMD_ID_FILE_EXPLORER_CHANGE_ATTRIBUTES:
                    return CMD_SUBGROUP_FILE_EXPLORER_BASE_OPERATION;
                case CMD_ID_FILE_EXPLORER_CALCULATE_FOLDER_SIZE:
                case CMD_ID_FILE_EXPLORER_CALCULATE_SPACE_OCCUPIED:
                case CMD_ID_FILE_EXPLORER_TEST_ARCHIVE:
                case CMD_ID_FILE_EXPLORER_EXTRACT_ARCHIVE:
                case CMD_ID_FILE_EXPLORER_JOIN_FILES:
                case CMD_ID_FILE_EXPLORER_SPLIT_FILES:
                case CMD_ID_FILE_EXPLORER_SEARCH:
                case CMD_ID_FILE_EXPLORER_GENERATE_CHECKSUM:
                case CMD_ID_FILE_EXPLORER_VERIFY_CHECKSUM:
                case CMD_ID_FILE_EXPLORER_CREATE_FILE_CLONE:
                case CMD_ID_FILE_EXPLORER_CREATE_LINK:
                case CMD_ID_FILE_EXPLORER_COMPRESS:
                case CMD_ID_FILE_EXPLORER_EXPORT_LIST_TO_FILE:
                case CMD_ID_FILE_EXPLORER_ENCRYPT_FILES:
                case CMD_ID_FILE_EXPLORER_DECRYPT_FILES:
                case CMD_ID_FILE_EXPLORER_CREATE_EMPTY_FILE:
                case CMD_ID_FILE_EXPLORER_CREATE_NEW_FILE_FROM_CLIPBOARD:
                case CMD_ID_FILE_EXPLORER_CREATE_FULL_LIST:
                case CMD_ID_FILE_EXPLORER_MULTI_RENAME_TOOL:
                    return CMD_SUBGROUP_FILE_EXPLORER_EXT_OPERATION;
                case CMD_ID_FILE_EXPLORER_NEW_TAB:
                case CMD_ID_FILE_EXPLORER_NEW_TAB_CURRENT_PATH:
                case CMD_ID_FILE_EXPLORER_NEW_TAB_CURRENT_ITEM:
                    return CMD_SUBGROUP_FILE_EXPLORER_TABS;
                case CMD_ID_TAB_CLOSE_ACTIVE:
                case CMD_ID_TAB_CLOSE_ALL:
                case CMD_ID_TAB_CLOSE_ALL_RIGHT:
                case CMD_ID_TAB_NEXT:
                case CMD_ID_TAB_PREVIOUS:
                case CMD_ID_TAB_RENAME:
                case CMD_ID_TAB_DUPLICATE:
                    return CMD_SUBGROUP_COMMON_TABS;
                default: return CMD_SUBGROUP_COMMON_COMMON;
            }
        }

        #region Klavesy
        public const int KEY_NONE = 0;
        public const int KEY_A = 1;
        public const int KEY_B = 2;
        public const int KEY_C = 3;
        public const int KEY_D = 4;
        public const int KEY_E = 5;
        public const int KEY_F = 6;
        public const int KEY_G = 7;
        public const int KEY_H = 8;
        public const int KEY_I = 9;
        public const int KEY_J = 10;
        public const int KEY_K = 11;
        public const int KEY_L = 12;
        public const int KEY_M = 13;
        public const int KEY_N = 14;
        public const int KEY_O = 15;
        public const int KEY_P = 16;
        public const int KEY_Q = 17;
        public const int KEY_R = 18;
        public const int KEY_S = 19;
        public const int KEY_T = 20;
        public const int KEY_U = 21;
        public const int KEY_V = 22;
        public const int KEY_W = 23;
        public const int KEY_X = 24;
        public const int KEY_Y = 25;
        public const int KEY_Z = 26;
        public const int KEY_0 = 27;
        public const int KEY_1 = 28;
        public const int KEY_2 = 29;
        public const int KEY_3 = 30;
        public const int KEY_4 = 31;
        public const int KEY_5 = 32;
        public const int KEY_6 = 33;
        public const int KEY_7 = 34;
        public const int KEY_8 = 35;
        public const int KEY_9 = 36;
        public const int KEY_F1 = 37;
        public const int KEY_F2 = 38;
        public const int KEY_F3 = 39;
        public const int KEY_F4 = 40;
        public const int KEY_F5 = 41;
        public const int KEY_F6 = 42;
        public const int KEY_F7 = 43;
        public const int KEY_F8 = 44;
        public const int KEY_F9 = 45;
        public const int KEY_F10 = 46;
        public const int KEY_F11 = 47;
        public const int KEY_F12 = 48;
        public const int KEY_ESC = 49;
        public const int KEY_BACKSPACE = 50;
        public const int KEY_INSERT = 51;
        public const int KEY_HOME = 52;
        public const int KEY_END = 53;
        public const int KEY_PAGE_UP = 54;
        public const int KEY_PAGE_DOWN = 55;
        public const int KEY_LEFT = 56;
        public const int KEY_RIGHT = 57;
        public const int KEY_UP = 58;
        public const int KEY_DOWN = 59;
        public const int KEY_BACKSLASH = 60;
        public const int KEY_ADD = 61;
        public const int KEY_SUB = 62;
        public const int KEY_DIVIDE = 63;
        public const int KEY_MULTIPLY = 64;
        public const int KEY_SPACE = 65;
        public const int KEY_DELETE = 66;
        public const int KEY_ENTER = 67;
        public const int KEY_TAB = 68;
        public const int KEY_LAST = 69;
        public const int KEY_CTRL = 0x100;
        public const int KEY_ALT = 0x200;
        public const int KEY_SHIFT = 0x400;
        #endregion

        public const int CMD_ID_NONE = 0;
        public const int CMD_ID_SHOW_ABOUT = 1;
        public const int CMD_ID_EDIT_SHORTCUTS = 2;
        public const int CMD_ID_VISIT_HOMEPAGE = 3;
        public const int CMD_ID_EDIT_SETTINGS = 4;
        public const int CMD_ID_FILE_EXPLORER_SHOW_LEFT_PANEL = 5;
        public const int CMD_ID_FILE_EXPLORER_SHOW_RIGHT_PANEL = 6;
        public const int CMD_ID_FILE_EXPLORER_CENTER_PANELS = 7;
        public const int CMD_ID_FILE_EXPLORER_SWAP_ORIENTATION = 8;
        public const int CMD_ID_FILE_EXPLORER_EXPAND = 9;
        public const int CMD_ID_FILE_EXPLORER_OPEN = 10;
        public const int CMD_ID_FILE_EXPLORER_FORCE_OPEN = 11;
        public const int CMD_ID_FILE_EXPLORER_GO_BACK = 12;
        public const int CMD_ID_FILE_EXPLORER_RELOAD = 13;
        public const int CMD_ID_EDIT_VISUAL_THEME = 14;
        public const int CMD_ID_FILE_EXPLORER_GO_DEVICES = 15;
        public const int CMD_ID_FILE_EXPLORER_GO_DEVICE_ROOT = 16;
        public const int CMD_ID_FILE_EXPLORER_GO_SPECIAL_DESKTOP = 17;
        public const int CMD_ID_FILE_EXPLORER_GO_SPECIAL_MY_DOCS = 18;
        public const int CMD_ID_FILE_EXPLORER_GO_SPECIAL_MY_IMAGES = 19;
        public const int CMD_ID_FILE_EXPLORER_GO_SPECIAL_MY_MUSIC = 20;
        public const int CMD_ID_FILE_EXPLORER_GO_SPECIAL_MY_VIDEOS = 21;
        public const int CMD_ID_FILE_EXPLORER_GO_SPECIAL_WINDOWS = 22;
        public const int CMD_ID_FILE_EXPLORER_GO_SPECIAL_SYSTEM = 23;
        public const int CMD_ID_FILE_EXPLORER_GO_SPECIAL_START = 24;
        public const int CMD_ID_FILE_EXPLORER_GO_SPECIAL_TEMP = 25;
        public const int CMD_ID_FILE_EXPLORER_GO_PREV_DEVICE = 26;
        public const int CMD_ID_FILE_EXPLORER_GO_NEXT_DEVICE = 27;
        public const int CMD_ID_FILE_EXPLORER_GO_SAME_PANELS = 28;
        public const int CMD_ID_FILE_EXPLORER_GO_CHOOSE = 29;
        public const int CMD_ID_FILE_EXPLORER_SHOW_DRIVE_MENU_LEFT_PANEL = 30;
        public const int CMD_ID_FILE_EXPLORER_SHOW_DRIVE_MENU_RIGHT_PANEL = 31;
        public const int CMD_ID_FILE_EXPLORER_GO_DIRECT = 32;
        public const int CMD_ID_FILE_EXPLORER_EXCHANGE_PANELS = 33;
        public const int CMD_ID_FILE_EXPLORER_SELECT_INVERT_ACTIVE = 34;
        public const int CMD_ID_FILE_EXPLORER_SELECT_SELECT_ALL = 35;
        public const int CMD_ID_FILE_EXPLORER_SELECT_DESELECT_ALL = 36;
        public const int CMD_ID_FILE_EXPLORER_SELECT_INVERT_ALL = 37;
        public const int CMD_ID_FILE_EXPLORER_SELECT_SELECT_ALL_DIRS = 38;
        public const int CMD_ID_FILE_EXPLORER_SELECT_DESELECT_ALL_DIRS = 39;
        public const int CMD_ID_FILE_EXPLORER_SELECT_INVERT_ALL_DIRS = 40;
        public const int CMD_ID_FILE_EXPLORER_SELECT_SELECT_ALL_FILES = 41;
        public const int CMD_ID_FILE_EXPLORER_SELECT_DESELECT_ALL_FILES = 42;
        public const int CMD_ID_FILE_EXPLORER_SELECT_INVERT_ALL_FILES = 43;
        public const int CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_SELECT_SAME_EXT = 44;
        public const int CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_DESELECT_SAME_EXT = 45;
        public const int CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_SELECT_SAME_NAME = 46;
        public const int CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_DESELECT_SAME_NAME = 47;
        public const int CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_COMPARE_DIRS_SAME = 48;
        public const int CMD_ID_FILE_EXPLORER_SELECT_SPECIAL_COMPARE_DIRS_OTHER = 49;
        public const int CMD_ID_FILE_EXPLORER_SELECT_FILE_SAVE = 50;
        public const int CMD_ID_FILE_EXPLORER_SELECT_FILE_LOAD = 51;
        public const int CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_FILES = 52;
        public const int CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_FULL_FILES = 53;
        public const int CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_PATH = 54;
        public const int CMD_ID_FILE_EXPLORER_SELECT_HIDE_SELECTION = 55;
        public const int CMD_ID_FILE_EXPLORER_SELECT_BY_FILTER = 56;
        public const int CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_SAVE = 57;
        public const int CMD_ID_FILE_EXPLORER_SELECT_CLIPBOARD_LOAD = 58;
        public const int CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_COPY = 59;
        public const int CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_PASTE = 60;
        public const int CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_CUT = 61;
        public const int CMD_ID_FILE_EXPLORER_QUICK_FIND = 62;
        public const int CMD_ID_TAB_CLOSE_ACTIVE = 63;
        public const int CMD_ID_TAB_CLOSE_ALL = 64;
        public const int CMD_ID_TAB_CLOSE_ALL_RIGHT = 65;
        public const int CMD_ID_TAB_NEXT = 66;
        public const int CMD_ID_TAB_PREVIOUS = 67;
        public const int CMD_ID_TAB_RENAME = 68;
        public const int CMD_ID_TAB_DUPLICATE = 69;
        public const int CMD_ID_FILE_EXPLORER_NEW_TAB = 70;
        public const int CMD_ID_FILE_EXPLORER_NEW_TAB_CURRENT_PATH = 71;
        public const int CMD_ID_FILE_EXPLORER_NEW_TAB_CURRENT_ITEM = 72;
        public const int CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_COPY_ACTIVE = 73;
        public const int CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_CUT_ACTIVE = 74;
        public const int CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_SHOW_PROPERTIES = 75;
        public const int CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_SHOW_PROPERTIES_PATH = 76;
        public const int CMD_ID_FILE_EXPLORER_RUN_COMMAND = 77;
        public const int CMD_ID_FILE_EXPLORER_MAP_NETWORK_DRIVE = 78;
        public const int CMD_ID_FILE_EXPLORER_UNMAP_NETWORK_DRIVE = 79;
        public const int CMD_ID_FILE_EXPLORER_SHARE_CURRENT_PATH = 80;
        public const int CMD_ID_FILE_EXPLORER_UNSHARE_CURRENT_PATH = 81;
        public const int CMD_ID_FILE_EXPLORER_RENAME_DEVICE = 82;
        public const int CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_PRINT = 83;
        public const int CMD_ID_FILE_EXPLORER_WINDOWS_SHELL_PRINT_ACTIVE = 84;
        public const int CMD_ID_FILE_EXPLORER_CALCULATE_FOLDER_SIZE = 85;
        public const int CMD_ID_FILE_EXPLORER_CALCULATE_SPACE_OCCUPIED = 86;
        public const int CMD_ID_FILE_EXPLORER_CREATE_FOLDER = 87;
        public const int CMD_ID_FILE_EXPLORER_RENAME_ITEM = 88;
        public const int CMD_ID_FILE_EXPLORER_COPY_ITEM = 89;
        public const int CMD_ID_FILE_EXPLORER_COPY_ITEM_ACTIVE = 91;
        public const int CMD_ID_FILE_EXPLORER_COPY_ITEM_SHELL_ACTIVE = 92;
        public const int CMD_ID_FILE_EXPLORER_COPY_ITEM_SELECTED = 93;
        public const int CMD_ID_FILE_EXPLORER_COPY_ITEM_SHELL_SELECTED = 94;
        public const int CMD_ID_FILE_EXPLORER_MOVE_TO_TRASH_ITEM = 95;
        public const int CMD_ID_FILE_EXPLORER_MOVE_TO_TRASH_ITEM_ACTIVE = 96;
        public const int CMD_ID_FILE_EXPLORER_MOVE_TO_TRASH_ITEM_SELECTED = 97;
        public const int CMD_ID_FILE_EXPLORER_MOVE_ITEM = 98;
        public const int CMD_ID_FILE_EXPLORER_MOVE_ITEM_ACTIVE = 100;
        public const int CMD_ID_FILE_EXPLORER_MOVE_ITEM_SHELL_ACTIVE = 101;
        public const int CMD_ID_FILE_EXPLORER_MOVE_ITEM_SELECTED = 102;
        public const int CMD_ID_FILE_EXPLORER_MOVE_ITEM_SHELL_SELECTED = 103;
        public const int CMD_ID_FILE_EXPLORER_DELETE_ITEM = 105;
        public const int CMD_ID_FILE_EXPLORER_DELETE_ITEM_ACTIVE = 106;
        public const int CMD_ID_FILE_EXPLORER_DELETE_ITEM_SELECTED = 107;
        public const int CMD_ID_FILE_EXPLORER_COPY_ITEM_INTERNAL_ACTIVE = 108;
        public const int CMD_ID_FILE_EXPLORER_COPY_ITEM_INTERNAL_SELECTED = 109;
        public const int CMD_ID_FILE_EXPLORER_MOVE_ITEM_INTERNAL_ACTIVE = 110;
        public const int CMD_ID_FILE_EXPLORER_MOVE_ITEM_INTERNAL_SELECTED = 111;
        public const int CMD_ID_FILE_EXPLORER_SHELL_OPEN_AS = 90;
        public const int CMD_ID_FILE_EXPLORER_TEST_ARCHIVE = 112;
        public const int CMD_ID_FILE_EXPLORER_TEST_ARCHIVE_ACTIVE = 99;
        public const int CMD_ID_FILE_EXPLORER_TEST_ARCHIVE_SELECTED = 113;
        public const int CMD_ID_FILE_EXPLORER_EXTRACT_ARCHIVE = 114;
        public const int CMD_ID_FILE_EXPLORER_EXTRACT_ARCHIVE_ACTIVE = 115;
        public const int CMD_ID_FILE_EXPLORER_EXTRACT_ARCHIVE_SELECTED = 116;
        public const int CMD_ID_FILE_EXPLORER_EXTRACT_COPY_ACTIVE = 117;
        public const int CMD_ID_FILE_EXPLORER_EXTRACT_COPY_SELECTED = 118;
        public const int CMD_ID_FILE_EXPLORER_CHANGE_ATTRIBUTES = 119;
        public const int CMD_ID_FILE_EXPLORER_CHANGE_ATTRIBUTES_ACTIVE = 120;
        public const int CMD_ID_FILE_EXPLORER_CHANGE_ATTRIBUTES_SELECTED = 121;
        public const int CMD_ID_FILE_EXPLORER_JOIN_FILES = 122;
        public const int CMD_ID_FILE_EXPLORER_SPLIT_FILES = 123;
        public const int CMD_ID_CHECK_UPDATE = 104;
        public const int CMD_ID_FILE_EXPLORER_DRAG_DROP_COPY = 124;
        public const int CMD_ID_FILE_EXPLORER_DRAG_DROP_MOVE = 125;
        public const int CMD_ID_FILE_EXPLORER_DRAG_DROP_LINK = 126;
        public const int CMD_ID_FILE_EXPLORER_SEARCH = 127;
        public const int CMD_ID_FILE_EXPLORER_GENERATE_CHECKSUM = 128;
        public const int CMD_ID_FILE_EXPLORER_GENERATE_CHECKSUM_ACTIVE = 129;
        public const int CMD_ID_FILE_EXPLORER_GENERATE_CHECKSUM_SELECTED = 130;
        public const int CMD_ID_FILE_EXPLORER_VERIFY_CHECKSUM = 131;
        public const int CMD_ID_FILE_EXPLORER_VERIFY_CHECKSUM_ACTIVE = 132;
        public const int CMD_ID_FILE_EXPLORER_VERIFY_CHECKSUM_SELECTED = 133;
        public const int CMD_ID_FILE_EXPLORER_RUN_EDITOR = 134;
        public const int CMD_ID_FILE_EXPLORER_CLOUD_SERVICES_CLEAR = 135;
        public const int CMD_ID_FILE_EXPLORER_CLOUD_SERVICES_DELETE_ACTIVE = 136;
        public const int CMD_ID_FILE_EXPLORER_CLOUD_SERVICES_EDIT = 137;
        public const int CMD_ID_FILE_EXPLORER_CLOUD_SERVICES_NEW_FTP = 138;
        public const int CMD_ID_FILE_EXPLORER_CLOUD_SERVICES_CLEAR_FTP = 139;
        public const int CMD_ID_FILE_EXPLORER_RUN_INTERNAL_VIEWER = 140;
        public const int CMD_ID_FILE_EXPLORER_CREATE_FILE_CLONE = 141;
        public const int CMD_ID_FILE_EXPLORER_CREATE_LINK = 142;
        public const int CMD_ID_FILE_EXPLORER_CREATE_LINK_ACTIVE = 143;
        public const int CMD_ID_FILE_EXPLORER_CREATE_LINK_SELECTED = 144;
        public const int CMD_ID_FILE_EXPLORER_COMPRESS = 145;
        public const int CMD_ID_FILE_EXPLORER_COMPRESS_ACTIVE = 146;
        public const int CMD_ID_FILE_EXPLORER_COMPRESS_SELECTED = 147;
        public const int CMD_ID_FILE_EXPLORER_COMPRESS_GZIP_ACTIVE = 148;
        public const int CMD_ID_FILE_EXPLORER_COMPRESS_GZIP_SELECTED = 149;
        public const int CMD_ID_FILE_EXPLORER_COMPRESS_TAR_GZIP_ACTIVE = 150;
        public const int CMD_ID_FILE_EXPLORER_COMPRESS_TAR_GZIP_SELECTED = 151;
        public const int CMD_ID_FILE_EXPLORER_COMPRESS_ZIP_ACTIVE = 152;
        public const int CMD_ID_FILE_EXPLORER_COMPRESS_ZIP_SELECTED = 153;
        public const int CMD_ID_FILE_EXPLORER_COMPRESS_TAR_ACTIVE = 154;
        public const int CMD_ID_FILE_EXPLORER_COMPRESS_TAR_SELECTED = 155;
        public const int CMD_ID_FILE_EXPLORER_RUN_VIEWER = 156;
        public const int CMD_ID_FILE_EXPLORER_EXPORT_LIST_TO_FILE = 158;
        public const int CMD_ID_FILE_EXPLORER_ENCRYPT_FILES = 159;
        public const int CMD_ID_FILE_EXPLORER_ENCRYPT_FILES_ACTIVE = 160;
        public const int CMD_ID_FILE_EXPLORER_ENCRYPT_FILES_SELECTED = 161;
        public const int CMD_ID_FILE_EXPLORER_DECRYPT_FILES = 162;
        public const int CMD_ID_FILE_EXPLORER_DECRYPT_FILES_ACTIVE = 163;
        public const int CMD_ID_FILE_EXPLORER_DECRYPT_FILES_SELECTED = 164;
        public const int CMD_ID_FILE_EXPLORER_CREATE_EMPTY_FILE = 165;
        public const int CMD_ID_FILE_EXPLORER_CREATE_NEW_FILE_FROM_CLIPBOARD = 166;
        public const int CMD_ID_FILE_EXPLORER_EJECT_CD_DEVICE = 167;
        public const int CMD_ID_FILE_EXPLORER_EXTRACT_CD_TRACKS = 168;
        public const int CMD_ID_FILE_EXPLORER_CREATE_FULL_LIST = 169;
        public const int CMD_ID_FILE_EXPLORER_MULTI_RENAME_TOOL = 170;
        public const int CMD_ID_LAST = 171;

        public const int CMD_APP_TARGET_NONE = 0;
        public const int CMD_APP_TARGET_ACTIVE = 1;
        public const int CMD_APP_TARGET_ALL = 2;
        public const int CMD_APP_TARGET_ALL_INACTIVE = 3;
        public const int CMD_APP_TARGET_SAME_AS_ACTIVE = 4;

        public const int CMD_PANEL_TARGET_NONE = 0;
        public const int CMD_PANEL_TARGET_LEFT = 1;
        public const int CMD_PANEL_TARGET_RIGHT = 2;
        public const int CMD_PANEL_TARGET_BOTH = 3;
        public const int CMD_PANEL_TARGET_ACTIVE = 4;
        public const int CMD_PANEL_TARGET_INACTIVE = 5;

        public const int CMD_GROUP_COMMON = 0;
        public const int CMD_GROUP_FILE_EXPLORER = 1;
        public const int CMD_GROUP_LAST = 2;

        public const int CMD_SUBGROUP_COMMON_COMMON = 0;
        public const int CMD_SUBGROUP_FILE_EXPLORER_COMMON = 1;
        public const int CMD_SUBGROUP_FILE_EXPLORER_NAVIGATION = 2;
        public const int CMD_SUBGROUP_FILE_EXPLORER_CONTENT = 3;
        public const int CMD_SUBGROUP_FILE_EXPLORER_SELECTION = 4;
        public const int CMD_SUBGROUP_FILE_EXPLORER_BASE_OPERATION = 5;
        public const int CMD_SUBGROUP_FILE_EXPLORER_TABS = 6;
        public const int CMD_SUBGROUP_FILE_EXPLORER_EXT_OPERATION = 7;
        public const int CMD_SUBGROUP_FILE_EXPLORER_COMMANDS = 8;
        public const int CMD_SUBGROUP_FILE_EXPLORER_TOOLS = 9;
        public const int CMD_SUBGROUP_COMMON_TABS = 10;
    }
}
